package com.soft.javase.ch03.statics;

/**
 * @author wangzhisen
 * @Desc TODO
 * @date 2025/4/20
 * 静态 static
 *  * 1.修饰成员属性  静态属性
 *  *   语法：访问权限修饰符 static 数据类型  属性名;
 *  * 2.修饰成员方法  静态方法
 *  *   语法：访问权限修饰符 static void/返回值数据类型  方法名() { //方法体 }
 *  * 3.修饰代码块    静态块
 *  *    语法：static{ //代码 }
 *  * 4.修饰内部类    静态内部类
 *  *
 *  * static 总结
 *  * 特点：
 *  * 1.修饰成员，此成员不再属于某个对象，而是属于该类
 *  * 2.修饰块，即是静态块，随着类加载而加载至内存中
 *  * 3.在内存中独一份
 *  * 4.非静态的成员方法中可以使用非静态成员，也可以使用静态成员；
 *  * 静态的成员方法中只可以使用静态成员，不能使用非静态成员。
 *  * 5.静态方法中，不能使用this
 *  * 6.静态方法能不能被继承？能不能被重写？  不能
 *  * 7.一般使用原则：类名.静态成员
 */
public class StaticDemo1 {

    //成员属性
    private String name;

    //静态属性
    private static int count;

    //成员方法
    public void eat(){
        System.out.println(name+"正在吃饭...");
    }

    //静态方法
    public static void getCount(){
        count++;
        System.out.println("count="+count);
    }

    public static void main(String[] args) {
        System.out.println("----------调用非静态的成员------------");
        StaticDemo1 s1 = new StaticDemo1();
        StaticDemo1 s2 = new StaticDemo1();
        s1.name="小明";
        s1.eat();
        s2.name="小红";
        s2.eat();


        System.out.println("----------调用静态的成员------------");
        StaticDemo1.getCount();//s1.getCount();
        StaticDemo1.getCount();//s2.getCount();
    }
}
